Skip to main content

Versi 1

FieldIsi
Dokumen IDVBS-PBL-007
DeskripsiPermintaan pembelian barang (Purchase Request) dari cabang / department, persetujuan per barang, dan proses PR yang disetujui menjadi Purchase Order
Nomor Revisi1
Tanggal2026-10-04
KeteranganDokumentasi baseline dari dokumentasi fitur demo dan kode FE

1. Ringkasan​

a. In scope​

  • User melihat daftar Purchase Request (tanggal, nomor invoice, lokasi, cabang, department, status Selesai / Perlu Approval).
  • User memfilter daftar berdasarkan tanggal, lokasi, cabang, dan department.
  • User membuat Purchase Request dengan cabang, lokasi, department, dan baris barang (barang, SKU, satuan, qty, keterangan).
  • User menyimpan PR sebagai draft (perlu approval) atau final.
  • Approver menyetujui atau menolak tiap barang PR beserta qty yang disetujui.
  • User membuat Purchase Order atas PR yang memiliki barang disetujui.
  • User meninjau daftar PR yang akan diproses menjadi PO pada halaman Proses Purchase Request ke Purchase Order.

b. Catatan​

c. Kesimpulan​

  • [FE] -
  • [BE] -

2. Functional Requirement​

KodeDeskripsi
FR-01Sistem menampilkan daftar PR dengan department, cabang, lokasi, dan status
FR-02User dapat memfilter daftar PR
FR-03User dapat membuat PR dengan rincian barang
FR-04User dapat menyimpan PR sebagai draft atau final
FR-05User dapat melihat detail PR
FR-06Approver dapat menyetujui / menolak barang PR dengan qty disetujui
FR-07User dapat membuat PO atas PR yang memiliki barang disetujui
FR-08User dapat meninjau PR yang akan diproses menjadi PO

3. Use Case List​

KodeDeskripsi
UC-01Melihat daftar purchase request
UC-02Memfilter daftar purchase request
UC-03Membuat purchase request
UC-04Melihat detail purchase request
UC-05Menyetujui atau menolak barang purchase request
UC-06Membuat purchase order atas purchase request
UC-07Meninjau PR yang akan diproses menjadi PO

4. Use Case Scenario​

UC-01 : Melihat daftar purchase request​

AktorUser dengan hak #purchase-request
DeskripsiUser melihat daftar PR
PrekondisiUser sudah login
Brand aktif
Alur utama1. User membuka halaman Purchase Request.
2. Sistem menampilkan daftar PR dengan department, cabang, lokasi, dan status.
3. User klik baris untuk membuka detail.
Alur negatif- Jika daftar kosong tanpa filter, muncul "Daftar Invoice masih kosong".
- Jika daftar kosong dengan filter, muncul "Invoice Tidak Ditemukan".
Bisnis rule- Menu Purchase Request tidak aktif di menu default, halaman diakses lewat route.
- User tanpa hak #purchase-request all hanya melihat PR miliknya.
- Kolom lokasi hanya tampil jika brand memiliki fitur lokasi.
- Status: Selesai jika sudah final, Perlu Approval jika belum.
PostkondisiDaftar PR tampil
TriggerUser membuka halaman Purchase Request
Kode FRFR-01

UC-02 : Memfilter daftar purchase request​

AktorUser dengan hak #purchase-request
DeskripsiUser mempersempit daftar PR
PrekondisiUser berada di halaman daftar
Alur utama1. User mencari nomor invoice.
2. User membuka Filter dan mengisi tanggal, lokasi, cabang, dan/atau department.
3. Sistem memuat ulang daftar.
Alur negatif- Jika tidak ada data, muncul "Invoice Tidak Ditemukan".
- Reset mengosongkan filter.
Bisnis rule- Filter lokasi hanya tampil jika brand memiliki fitur lokasi.
PostkondisiDaftar terfilter
TriggerUser mengubah filter
Kode FRFR-02

UC-03 : Membuat purchase request​

AktorUser dengan hak #purchase-request basic
DeskripsiUser mengajukan permintaan pembelian barang
PrekondisiBarang terdaftar di master barang
Alur utama1. User klik Buat Invoice.
2. User mengisi tanggal, cabang, lokasi, dan department.
3. User menambah baris barang (barang, satuan, qty, keterangan).
4. User memilih Simpan Draft atau Simpan Final, lalu mengonfirmasi.
5. Sistem menyimpan PR dan menampilkan "Berhasil buat Purchase Request".
Alur negatif- Jika form belum lengkap, muncul "Tolong lengkapi form dengan benar!".
- Jika rincian belum lengkap, muncul "Tolong lengkapi rincian dengan benar!".
- Jika cabang kosong, muncul "Tolong lengkapi gudang form dengan benar!" / "Tolong lengkapi gudang rincian dengan benar!".
Bisnis rule- Cabang per baris dipakai bila brand multi gudang.
- Untuk brand tertentu department diisi otomatis.
PostkondisiPR tersimpan
TriggerUser klik Simpan
Kode FRFR-03
FR-04

UC-04 : Melihat detail purchase request​

AktorUser dengan hak #pr view
DeskripsiUser melihat informasi dan barang PR
PrekondisiPR tersedia
Alur utama1. User klik PR di daftar atau memilih Lihat.
2. Sistem menampilkan informasi nota dan daftar barang dengan status approval.
Alur negatif- Jika PR tidak ditemukan, detail tidak tampil.
Bisnis rule- Menu tindakan pada detail: Approval PR (draft), Hapus (draft), Buat PO Atas PR (final dengan barang disetujui).
PostkondisiDetail PR tampil
TriggerUser membuka detail PR
Kode FRFR-05

UC-05 : Menyetujui atau menolak barang purchase request​

AktorApprover dengan hak #pr basic
DeskripsiApprover memutuskan tiap barang PR disetujui atau ditolak
PrekondisiPR berstatus belum selesai dan belum final
Alur utama1. Approver memilih Approval PR.
2. Sistem menampilkan barang dengan qty requested.
3. Approver memilih Approve / Decline per barang atau sekaligus, dan mengisi qty approved.
4. Approver klik Simpan.
5. Sistem menyimpan approval dan menampilkan "Berhasil Buat Approval".
Alur negatif- Jika qty approved melebihi qty requested, muncul "Qty tidak boleh lebih dari qty requested ...".
- Jika qty approved 0 untuk barang disetujui, muncul "Qty harus lebih dari 0".
- Jika masih ada barang pending, muncul "Masih ada barang yang belum di-approve atau di-decline".
- Jika gagal, muncul "Gagal Buat Approval".
Bisnis rule- Status approval barang: pending, approved, declined.
- Barang declined memiliki qty approved 0.
- Approve tanpa qty memakai qty requested.
- Setelah approval, PR menjadi Selesai (final).
PostkondisiStatus approval barang tersimpan
TriggerApprover klik Simpan pada modal approval
Kode FRFR-06

UC-06 : Membuat purchase order atas purchase request​

AktorUser dengan hak #po basic
DeskripsiUser memproses PR yang disetujui menjadi PO
PrekondisiPR final, status belum selesai, dan minimal satu barang approved
Alur utama1. User memilih Buat PO Atas PR dari daftar atau detail PR.
2. Sistem membuka form PO dengan PR terpilih.
3. Sistem mengisi cabang, lokasi, dan barang dari PR.
4. User memilih supplier, melengkapi harga, lalu menyimpan PO final.
5. Sistem membuat PO yang terhubung ke PR.
Alur negatif- Jika PR tidak ditemukan, muncul "Invoice PR yang anda cari tidak ditemukan!".
- Validasi PO lainnya mengikuti pembuatan PO.
Bisnis rule- Menu hanya muncul jika ada barang approved.
- PO final dari PR memakai jalur PO dengan PR, sedangkan draft memakai jalur tanpa PR.
- Setiap baris PO membawa id baris PR dan id invoice PR.
PostkondisiPO terbentuk dari PR
TriggerUser klik Buat PO Atas PR
Kode FRFR-07

UC-07 : Meninjau PR yang akan diproses menjadi PO​

AktorUser brand
DeskripsiUser melihat ringkasan PR (approval, status, department, cabang) pada halaman proses PR ke PO
PrekondisiUser membuka route proses PR ke PO
Alur utama1. User membuka halaman Proses Purchase Request ke Purchase Order.
2. Sistem menampilkan tabel nomor invoice, approval status, status, department, dan cabang.
3. User klik Proses Semua Purchase Request untuk membuka panel proses.
Alur negatif-
Bisnis rule- Halaman ini hanya tampilan review, tidak menyimpan PO sendiri.
- Pembuatan PO nyata dilakukan melalui UC-06.
PostkondisiDaftar PR untuk diproses tampil
TriggerUser membuka halaman proses PR ke PO
Kode FRFR-08

5. Data Flow Diagram​

DFD-01 — Alur purchase request ke purchase order​

6. Sequence Diagram​

SD-01 — UC-01 : Melihat daftar purchase request​

SD-02 — UC-02 : Memfilter daftar purchase request​

SD-03 — UC-03 : Membuat purchase request​

SD-04 — UC-04 : Melihat detail purchase request​

SD-05 — UC-05 : Menyetujui atau menolak barang purchase request​

SD-06 — UC-06 : Membuat purchase order atas purchase request​

SD-07 — UC-07 : Meninjau PR yang akan diproses menjadi PO​

7. Table Schema​

8. API Schema​

EndpointStatusPerubahan
GET /invoice-purchase-requestexisting-
GET /invoice-purchase-request/:idexisting-
POST /purchase-requestexisting-
POST /purchase-request/update-approvalexisting-
POST /invoice-purchase-order/with-prexisting-